<?php

namespace App\Models\Product;

use App\Models\BaseModel;

class ProductModel extends BaseModel
{
    /**
     * 与模型关联的数据表。
     *
     * @var string
     */
    protected $table = 'product';

    /**
     * 可以被批量赋值的属性。
     *
     * @var array
     */
    protected $fillable = array(
        'name',
        'product_code',
        'operator',
        'home_sheng',
        'home_shi',
        'product_type',
        'channel_sub',
        'product_is_idnum',
        'product_is_photo',
        'charm',
        'limit_address',
        'only_address',
        'limit_min_age',
        'limit_max_age',
        'max_number',
        'cycle',
        'warning_five_number',
        'warning_five_number_cycle',
        'warning_phone',
        'warning_phone_cycle',
        'warning_phone_scope',
        'warning_address',
        'warning_address_cycle',
        'warning_address_scope',
        'stock',
        'stock_num',
        'stock_call_num',
        'pool',
        'is_product',
        'shop_id',
        'shop_str',
        'created_by',
        'created_by_name',
        'created_at',
        'updated_by',
        'updated_at',
        'status',
        'remark',
        'prohibit',
        'onlyregion',
        'is_identity',
        'product_address'
    );

    // public $timestamps = false;

    public function aliasRable($alias)
    {
        return $this->setTable($alias);
    }

    /**
     * 查询数据需要过滤掉的属性。
     *
     * @var array
     */

    protected $hidden = array(
        'updated_at'
    );

    //返回关键字段
    public function getTableField()
    {
        return $this->fillable;
    }

    protected function serializeDate(\DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }

    /**
     * 建表语句
     */
    protected function buildTable($name = '')
    {
        $tablename = $this->table;
        if (!empty($name)) {
            $tablename = $name;
        }
        $table = "CREATE TABLE IF NOT EXISTS  $tablename (
            `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '产品ID',
            `name` bigint(20) DEFAULT NULL COMMENT '产品名称',
            `product_code` varchar(100) DEFAULT NULL COMMENT '产品编码',
            `operator` char(1) DEFAULT '0' COMMENT '运营商 0 移动 1 电信 2 联通 3虚拟',
            `home_sheng` varchar(255) DEFAULT '0' COMMENT '归属地:省 多个以逗号隔开',
            `home_shi` varchar(255) DEFAULT '0' COMMENT '归属地:市 多个以逗号隔开',
            `product_type` varchar(30) DEFAULT '00' COMMENT '产品类型',
            `channel_sub` varchar(50) DEFAULT '' COMMENT '所属渠道',
            `product_is_idnum` char(1) DEFAULT '0' COMMENT '是否需要身份证号 0 需要 1 不需要',
            `product_is_photo` char(1) DEFAULT '0' COMMENT '是否需要身份证照 0 需要 1 不需要',
            `charm` char(1) DEFAULT '0' COMMENT '上游效验 0 需要 1 不需要',
            `limit_address` INT(11) DEFAULT '0' COMMENT '不发货地址 记录的地区的数量',
            `only_address` int(11) DEFAULT '0' COMMENT '只发货地址 记录的地区的数量',
            `limit_min_age` int(11) DEFAULT '0' COMMENT '最小年龄',
            `limit_max_age` int(11) DEFAULT '0' COMMENT '最大年龄',
            `max_number` int(11) DEFAULT '0' COMMENT '最多数量 联系人手机号或身份证号',
            `cycle` int(11) DEFAULT '0' COMMENT '检测周期 以月为单位',
            `warning_five_number` char(1) DEFAULT '0' COMMENT '是否检测一证五号',
            `warning_five_number_cycle` int(11) DEFAULT '0' COMMENT '检测周期',
            `warning_phone` char(1) DEFAULT NULL COMMENT '联系电话检测次数',
            `warning_phone_cycle` int(11) DEFAULT '0' COMMENT '联系电话检测周期 以月为单位',
            `warning_phone_scope` char(1) DEFAULT '0' COMMENT '联系电话检测范围 0不检查 1本店铺 2平台订单',
            `warning_address` char(1) DEFAULT NULL COMMENT '联系地址检测次数',
            `warning_address_cycle` int(11) DEFAULT '0' COMMENT '联系地址检测周期 以月为单位',
            `warning_address_scope` char(1) DEFAULT '0' COMMENT '联系地址检测范围 0不检查 1本店铺 2平台订单',
            `stock` char(1) DEFAULT '0' COMMENT '库存 0 不限 1 限制',
            `stock_num` int(11) DEFAULT '0' COMMENT '库存数量',
            `stock_call_num` int(11) DEFAULT '0' COMMENT '最低报警库存',
            `pool` int(11) DEFAULT '0' COMMENT '关联号池 0 不关联 数字代表关联的id',
            `is_product` char(1) DEFAULT '0' COMMENT '是否自动生产 0 不自动生产 1 自动生产',
            `shop_id` int(11) DEFAULT '0' COMMENT '店铺id',
            `shop_str` varchar(255) DEFAULT '0' COMMENT '店铺字符串 使用逗号隔开',
            `created_by` int(11) DEFAULT '0' COMMENT '创建者',
            `created_by_name` varchar(64) DEFAULT '' COMMENT '创建者名称',
            `created_at` datetime DEFAULT NULL COMMENT '创建时间',
            `updated_by` varchar(64) DEFAULT '' COMMENT '更新者',
            `updated_at` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
            `remark` varchar(500) DEFAULT NULL COMMENT '订单备注',

            PRIMARY KEY (`id`)
            ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='产品表';";
        return $table;
    }

    /**
     * 插入新的字段
     */
    protected function bulidField()
    {
        //例子
        $array = [
            'status' => "char(1) DEFAULT '0' COMMENT '是否上架'",
            'prohibit' => "varchar(500) DEFAULT NULL COMMENT '禁发地'",
            'onlyregion' => "varchar(500) DEFAULT NULL COMMENT '只发地区'",
            'is_identity' => "char(1) DEFAULT '0' COMMENT '是否需要身份证信息 0 需要 1 不需要'",
            'product_address' => "int(11) DEFAULT null COMMENT '关联区域设置的模板'",
        ];
        return $array;
    }

    // 关联 role表
    public function userToRole($role)
    {
        // return $this->hasMany(Role::className(),);
    }
//
}
